﻿namespace Iesi.Collections.Generic
{
    using System;
    using System.Collections;
    using System.Collections.Generic;

    public interface ISet<T> : ICollection<T>, IEnumerable<T>, IEnumerable, ICloneable
    {
        bool Add(T o);
        bool AddAll(ICollection<T> c);
        bool ContainsAll(ICollection<T> c);
        ISet<T> ExclusiveOr(ISet<T> a);
        ISet<T> Intersect(ISet<T> a);
        ISet<T> Minus(ISet<T> a);
        bool RemoveAll(ICollection<T> c);
        bool RetainAll(ICollection<T> c);
        ISet<T> Union(ISet<T> a);

        bool IsEmpty { get; }
    }
}

